<%@page import="java.sql.Date"%>
<%@page import="java.text.SimpleDateFormat"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.GregorianCalendar,java.util.Calendar,java.util.regex.*,java.util.*" %>
<%@page import="java.rmi.registry.LocateRegistry"%>
<%@page import="java.rmi.registry.Registry"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.sql.*"%>
<%@page import="rmi.*" %>
<%@page import="data.*" %>
<jsp:useBean id="manager" scope="session" class="manager.Manager" />

<%
ArrayList<Patient> list=new ArrayList<Patient>() ;

ArrayList<Medicament> listMedicament=new ArrayList<Medicament>() ;

int nbPatient=0;
Iterator it ;
Iterator itMedicament ;

String errAjout=""; 
String errAjoutMedicament=""; 
String id_patient="" ;
String errId_patient="" ;
String description="" ;
String errDescription="" ;
String id_medicament="" ;
String frequence="" ;
String quantite="" ;
int nombre_medicament=0; 

nbPatient=manager.getServeurRmi().nbEnregistrements(Patient.class);
list=manager.getServeurRmi().listerPatients("","","",0,nbPatient) ;
listMedicament=manager.getServeurRmi().listerMedicaments("") ;

it=list.iterator() ;
itMedicament=listMedicament.iterator() ;

ArrayList<String> tabMedicament=new ArrayList<String>() ;
HashMap<String,String> tabMedFreq=new HashMap<String,String>() ;
HashMap<String,String> tabMedQuant=new HashMap<String,String>() ;


if(request.getParameter("id_patient") != null){
	id_patient=request.getParameter("id_patient");
}

if(request.getParameter("description") != null){
	description=request.getParameter("description");
}

/**
* Sauvegarde des médicaments enregistrés dans l'ordonnance
*/
if(request.getParameter("nombre_medicament") != null){
	nombre_medicament=Integer.parseInt(request.getParameter("nombre_medicament")) ;
	for(int i=0;i<nombre_medicament;i++) {
		tabMedicament.add(request.getParameter("identifiant_medicament_"+i)) ;
		tabMedFreq.put(request.getParameter("identifiant_medicament_"+i),request.getParameter("frequence_"+i)) ;
		tabMedQuant.put(request.getParameter("identifiant_medicament_"+i),request.getParameter("quantite_"+i)) ;		
	}
			
}

/**
* Ajout d'un medicament
*/
if(request.getParameter("id_medicament") != null){
	if(!tabMedicament.contains(request.getParameter("id_medicament"))) {
		tabMedicament.add(request.getParameter("id_medicament")) ;
		tabMedFreq.put(request.getParameter("id_medicament"),request.getParameter("frequence")) ;
		tabMedQuant.put(request.getParameter("id_medicament"),request.getParameter("quantite")) ;
	}else{
		errAjoutMedicament="Médicament déjà ajouté" ;
	}
}

/**
* Suppression d'un médicament
*/
if(request.getParameter("supprimer_medicament") != null) {
	nombre_medicament=Integer.parseInt(request.getParameter("nombre_medicament")) ;
	for(int i=0;i<nombre_medicament;i++) {
		if(request.getParameter("checkbox_"+i) != null) {
			tabMedicament.remove(request.getParameter("checkbox_"+i)) ;
			tabMedFreq.remove(request.getParameter("checkbox_"+i)) ;
			tabMedQuant.remove(request.getParameter("checkbox_"+i)) ;
		}
	}
}

/**
* Création de l'ordonnance
*/
if(request.getParameter("creer_ordonnance") != null) {
	boolean err = false;
	java.util.Date date = new java.util.Date();
	java.sql.Date dateSQL = new java.sql.Date(date.getTime());

	id_patient=request.getParameter("id_patient");	
	if(id_patient == null) id_patient = "";
	if(id_patient.trim().equals("")){
		errId_patient = "Veuillez sélectionner un patient";
		err = true;
	}
	
	description=request.getParameter("description");	
	if(description == null) description = "";
	if(description.trim().equals("")){
		errDescription = "Veuillez remplir la description de l'ordonnance";
		err = true;
	}
	
	if(!err){
		Integer id_ordonnance=manager.getServeurRmi().stocker(new Ordonnance(dateSQL.toString(),description,id_patient, manager.getIdMedecin())) ; 
		if(id_ordonnance>0) {
			id_ordonnance=manager.getServeurRmi().nbEnregistrements(Ordonnance.class);
			if(nombre_medicament>0) {
				for(int i=0;i<nombre_medicament;i++) {
					String idMedicament=request.getParameter("identifiant_medicament_"+i) ;
					String medicamentFrequence=request.getParameter("frequence_"+i) ;
					String medicamentQuantite=request.getParameter("quantite_"+i) ;		
					manager.getServeurRmi().stocker(new Posologie(""+id_ordonnance, idMedicament,medicamentQuantite, medicamentFrequence)) ; 				
				}
			}
			
			ArrayList<String> messages = new ArrayList<String>();
			messages.add("Ordonnace créée");
			manager.setMessages(messages);
%>
			<jsp:forward page="lister_ordonnance.jsp" />
<%
			return;
		}else{
			errAjout = "Insertion en bdd impossible";
		}
	}
}
%>

<form method="post" action="../ordonnance/creer_ordonnance.jsp" name="form" id="form">
<h2>Patient</h2>
<table>
	<tr>
		<td>Choississez le patient dans la liste * :</td>
		<td>
			<select name="id_patient">
				<option value=""></option>
<%
				while(it.hasNext()) {
					Patient p=(Patient) it.next() ;
					if(id_patient.trim().equals(p.getNumero_securite_sociale_patient())) {
%>
						<option value="<%= p.getNumero_securite_sociale_patient() %>" selected="selected"><%= p.getNumero_securite_sociale_patient() %> | <%= p.getNom_patient() %> <%= p.getPrenom_patient() %></option>
<%				
					}else{
%>
						<option value="<%= p.getNumero_securite_sociale_patient() %>"><%= p.getNumero_securite_sociale_patient() %> | <%= p.getNom_patient() %> <%= p.getPrenom_patient() %></option>
<%						
					}
				}
%>				
			</select>
		</td>
		<td id="erreur"><%= errId_patient %></td>
	</tr>  
</table>

<h2>Médicaments</h2>
<%
if(tabMedicament.size()>0) {
	Iterator itPosologie=tabMedicament.iterator() ;
%>
	<h3>Liste des médicaments</h3>
	<table>
<%
		int cpt=0;
		while(itPosologie.hasNext()) {
			String id=(String) itPosologie.next() ;
			Medicament med=manager.getServeurRmi().getMedicament(Integer.parseInt(id)) ;
%>	
			<input type="hidden" name="identifiant_medicament_<%= cpt %>" value="<%= med.getId_medicament() %>"/>
			<input type="hidden" name="frequence_<%= cpt %>" value="<%= tabMedFreq.get(""+med.getId_medicament()) %>"/>
			<input type="hidden" name="quantite_<%= cpt %>" value="<%= tabMedQuant.get(""+med.getId_medicament()) %>"/>
			<tr>
				<td><%= med.getNom_medicament() %></td>
				<td><%= tabMedFreq.get(""+med.getId_medicament()) %></td>
				<td><%= tabMedQuant.get(""+med.getId_medicament()) %></td>
				<td><input type="checkbox" name="checkbox_<%= cpt %>" value="<%= med.getId_medicament() %>" /></td>
			</tr>
<%
			cpt++ ;
		}
%>		
		<tr>
			<td style="border-bottom:1px solid black;">&nbsp;</td>
			<td style="border-bottom:1px solid black;">&nbsp;</td>
			<td style="border-bottom:1px solid black;">&nbsp;</td>
			<td style="border-bottom:1px solid black;"><input type="submit" name="supprimer_medicament" value="Supprimer"/></td>
		</tr>
		<tr>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
		</tr>
	</table>
	<input type="hidden" name="nombre_medicament" value="<%= cpt %>" />
<%	
}
%>
<table>
<%
if(request.getParameter("medicament") == null || request.getParameter("medicament") == "" || tabMedicament.contains(request.getParameter("medicament"))){
	if(tabMedicament.contains(request.getParameter("medicament"))) {
		errAjoutMedicament="Médicament déjà ajouté" ;
	}
%>
	<tr>
		<td>Choississez le médicament dans la liste * :</td>
		<td>
			<select name="medicament">
				<option value=""></option>
<%
				while(itMedicament.hasNext()) {
					Medicament p=(Medicament) itMedicament.next() ;
%>
					<option value="<%= p.getId_medicament() %>"><%= p.getNom_medicament() %></option>
<%				
				}
%>				
			</select>
		</td>
		<td id="erreur"><%= errAjoutMedicament %></td>
	</tr>
	<tr>
		<td>&nbsp;</td>
		<td><input type="submit" name="ajouter_medicament" value="Ajouter médicament"/></td>
	</tr>
<%
}else{
	id_medicament = request.getParameter("medicament");
	
	Medicament m=manager.getServeurRmi().getMedicament(Integer.parseInt(id_medicament)) ;
	frequence=m.getFrequence_medicament() ;
	quantite=""+m.getQuantite_medicament() ;
%>	
	<input type="hidden" name="id_medicament" value="<%= m.getId_medicament() %>" />
	<tr>
		<td><%= m.getNom_medicament() %></td>
		<td>&nbsp;</td>
		<td>&nbsp;</td>
	</tr>
	<tr>
		<td>Fréquence :</td>
		<td><input type="text" name="frequence" size="40" maxlength="255"  value="<%= frequence %>"/></td>
		<td>&nbsp;</td>
	</tr>
	<tr>
		<td>Quantité :</td>
		<td><input type="text" name="quantite" size="40" maxlength="255" value="<%= quantite %>"/></td>
		<td>&nbsp;</td>
	</tr>
	<tr> 
		<td>&nbsp;</td> 
		<td id="erreur"><input type="button" name="annuler_medicament" value="Annuler" onclick="document.getElementById('form').submit();"/></td>
		<td  style="text-align:right;"><input type="submit" name="ajout_medicament" value="Ajouter médicament" /></td> 
	</tr>	

<%	
}
%>
</table>
<h2>Description</h2>
<table>
	<tr>
		<td id="erreur"><%= errDescription %></td>
	</tr>
	<tr>
		<td style="text-align:center"><textarea name="description" rows="20" cols="80"><%= description %></textarea></td>
	</tr>
</table>


<table>
	<tr> 
		<td>&nbsp;</td> 
		<td id="erreur"><%= errAjout %></td>
		<td  style="text-align:right;"><input type="submit" value="Créer l'ordonnance" name="creer_ordonnance"/></td> 
	</tr> 
	<tr> 
		<td style="font-style:italic;font-size:10px;">* : champ obligatoire</td> 
		<td>&nbsp;</td> 
		<td>&nbsp;</td>
	</tr>
</table>
</form>